/**
 * 漆水河 脚手架基础公开课
 * 2022/8/13 --- 2022/12/13
 * 有疑问可加QQ群: 809126489，后续会持续输出与大家一起成长
 */
package com.qishuihe.outbound.user;

import com.qishuihe.baseinterface.basevo.vo.ResultVO;
import com.qishuihe.baseinterface.basevo.vo.ResultPageVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;

import javax.ws.rs.PathParam;

@Api(tags = "用户基本信息及权限增删改查相关服务")
@FeignClient(value = "com.qishuihe.commonapp")
public interface IUser {

    @ApiOperation(value = "/admin/modfiyUser",notes = "修改用户")
    @PostMapping(path  = "/admin/modfiyUser", name = "修改用户")
    ResultVO<RegisteredUserDTO> modfiyUser (RegisteredUserDTO registeredUserDTO);

    @ApiOperation(value = "/admin/queryUser",notes = "查询用户")
    @PostMapping(path = "/admin/queryUser", name="查询用户")
    ResultPageVO<RegisteredUserDTO> queryUser (QueryPageDTO<RegisteredUserDTO> registeredUserDTO);


    @ApiOperation(value = "/admin/deletUserByIds",notes = "批量删除用户")
    @DeleteMapping(path = "/admin/deletUserByIds", name="批量删除用户")
    ResultVO deletUserByIds (Long[] ids);

    @ApiOperation(value = "/admin/deletUserById",notes = "删除用户")
    @DeleteMapping(path = "/admin/deletUserById/{id}", name="删除用户")
    ResultVO deletUserById (Long id);

    @ApiOperation(value = "/admin/queryUserById/{id}",notes = "修改用户")
    @DeleteMapping(path = "/admin/queryUserById/{id}", name="按照ID查询用户")
    ResultVO<RegisteredUserDTO> queryUserById (@PathVariable(name="id") Long id);


    @ApiOperation(value = "/admin/modfiyRoleUser",notes = "修改角色用户")
    @PostMapping(path = "/admin/modfiyRoleUser", name="修改角色用户")
    ResultVO<RoleUserDTO> modfiyRoleUser (RoleUserDTO roleUserDTO);


    @ApiOperation(value = "/admin/resetwd",notes = "重置密码")
    @PostMapping(path = "/admin/resetwd", name="重置密码")
    ResultVO<String> resetwd (String wd);


    @ApiOperation(value = "/admin/sendResetLink",notes = "发送重置链接")
    @PostMapping(path = "/admin/sendResetLink", name="发送重置链接")
    ResultVO<String> sendResetLink (String email);

    @ApiOperation(value = "/sendVerifyCode",notes = "发送验证码")
    @PostMapping(path = "/admin/sendVerifyCode",name = "发送验证码")
    ResultVO<String> sendVerifyCode(String email);
}
